home *** CD-ROM | disk | FTP | other *** search
/ US Department of Defenseā€¦ndamentals 1.0 2004 April / US Department of Defense: Firewall & Router Fundamentals 1.0 2004 April.iso / text_only / includes / sco_functions.js < prev    next >
Text File  |  2004-03-11  |  13KB  |  528 lines

  1. function initialize_page()
  2. {
  3.  
  4.   //figure next and previous page URLs
  5.   //DO NEXT PAGE
  6.   var tmp_page_type = "";
  7.   var tmp_page_id = "";
  8.   if (API_WIN.RUN_REVIEW) {
  9.     tmp_page_id = parse_string(API_WIN.REVIEW_PAGES,",",API_WIN.REVIEW_PAGE_NUM + 1);
  10.   }
  11.   else  {
  12.     if (PAGE_NUM < MAX_PAGE_NUM)  {
  13.       //get next page id
  14.       tmp_page_id = API_WIN.DT_PAGE_LIST[PAGE_NUM];
  15.     }
  16.   }
  17.   if (tmp_page_id != "")  {
  18.     tmp_page_type = API_WIN.get_page_type(tmp_page_id);
  19.     NEXT_PAGE = PATH_EXT + API_WIN.get_content_url(tmp_page_id,tmp_page_type);
  20.   }
  21.   else  {
  22.     NEXT_PAGE = "close";
  23.     if (AUTO_COMPLETION)
  24.       SCO_STATUS = "c";
  25.   }
  26.  
  27.   //DO PREVIOUS PAGE
  28.   tmp_page_type = "";
  29.   //convert prev page num into padded str
  30.   tmp_page_id = "";
  31.   if (API_WIN.RUN_REVIEW) {
  32.     tmp_page_id = parse_string(API_WIN.REVIEW_PAGES,",",API_WIN.REVIEW_PAGE_NUM - 1);
  33.   }
  34.   else  {
  35.     if (PAGE_NUM > 1)  {
  36.       //get next page id
  37.       tmp_page_id = API_WIN.DT_PAGE_LIST[PAGE_NUM - 2];
  38.     }
  39.   }
  40.   if (tmp_page_id != "")  {
  41.     tmp_page_type = API_WIN.get_page_type(tmp_page_id);
  42.     PREV_PAGE = PATH_EXT + API_WIN.get_content_url(tmp_page_id,tmp_page_type);
  43.   }
  44.   else  {
  45.     PREV_PAGE = "close";
  46.     DISABLE_PREV = true;
  47.   }
  48. }
  49.  
  50. function start_page()
  51. {
  52.   
  53.   //show interface images
  54.   show_interface();
  55.   
  56.   if (API_WIN.RUNNING_QUEST)  {
  57.     DISABLE_PREV = true;
  58.     if (API_WIN.QUEST_NUM <= API_WIN.MAX_QUEST_NUM)
  59.       DISABLE_NEXT = true;
  60.   }
  61.  
  62.   if (!RUN_508)  {
  63.     if (DISABLE_NEXT)
  64.           document.NEXT.src = NEXT_DE.src;
  65.       else
  66.         document.NEXT.src = NEXT_DEF.src;
  67.  
  68.       if (DISABLE_PREV)
  69.           document.PREVIOUS.src = PREVIOUS_DE.src;
  70.       else
  71.           document.PREVIOUS.src = PREVIOUS_DEF.src;
  72.   }
  73.  
  74.   LOAD_DONE = true;
  75.  
  76.   if ((ENABLE_AUDIO) && ((PAGE_TYPE == "flash") || (AUDIO_TYPE == "flash"))) {
  77.     if ("undefined" != typeof get_obj_style("flash_obj").display) {
  78.       var obj_style = get_obj_style("flash_obj");
  79.       obj_style.display = "";
  80.       if ("undefined" != typeof document.flashplayer.focus) {
  81.         document.flashplayer.focus();
  82.       }
  83.     }
  84.   }
  85.  
  86.   //show audio narrative
  87.   show_audio();
  88.   
  89.   //show LCMS Review Window, enabled
  90.   if ((API_WIN.LCMS_REVIEW) && (!API_WIN.RUN_REVIEW)) {
  91.     var tmp_url = API_WIN.LCMS_REVIEW_PATH + API_WIN.LCMS_REVIEW_PAGE + "&pageNumber=" + parseInt(PAGE_NUM) + "&displayTypeIndex=" + API_WIN.CUR_DT;
  92.     open_lcms_review(tmp_url);
  93.   }
  94.  
  95.   //send status & bookmark, if not running question or review
  96.   if ((!API_WIN.RUN_REVIEW) && (!API_WIN.RUNNING_QUEST))  {
  97.     API_WIN.set_sco_status("1",SCO_STATUS);
  98.     API_WIN.set_sco_location("1",PAGE_NUM);
  99.   }
  100.  
  101.   if ("function" == typeof content_start_page) {
  102.     content_start_page();
  103.   }
  104.  
  105. }
  106.  
  107. function replay_page()
  108. {
  109.   location.reload();
  110. }
  111.  
  112. function exit_page()
  113. {
  114.   API_WIN.close_child_windows("exit_page",window.name);
  115. }
  116.  
  117. function goto_page(page,direction)
  118. {
  119.     if ((DISABLE_NEXT == true && direction == "next") || (DISABLE_PREV == true && direction == "previous")) {
  120.     //nothing
  121.         //alert("You can not continue at this point. Please try a different option.");
  122.   }
  123.     else  {
  124.         if (page == "close")  {
  125.             if (API_WIN.WIN_TYPE == "new_window")
  126.         window.close();
  127.       if (API_WIN.WIN_TYPE == "current_window")
  128.         goto_menu();
  129.       if (API_WIN.WIN_TYPE == "frame")  {
  130.         API_WIN.sco_finish();
  131.         //window.location.href="about:blank";
  132.       }
  133.     }
  134.         else  {
  135.       if (page != "")
  136.         window.location.href = page;
  137.     }
  138.     }
  139. }
  140.  
  141. function goto_next_page()
  142. {
  143.   if (!DISABLE_NEXT)  {
  144.     //going to course page or question page?
  145.     if ((API_WIN.RUN_QUEST) || (API_WIN.RUNNING_QUEST))  {
  146.       //are we already in a question?
  147.       if (API_WIN.RUNNING_QUEST)  {
  148.         goto_next_question();
  149.       }
  150.       else  {
  151.         //go to questions
  152.         goto_page("questions/start.htm","");
  153.       }
  154.     }
  155.     else  {
  156.         //increment opener PAGE_NUM or REVIEW_PAGE_NUM
  157.         if ((API_WIN.RUN_REVIEW) && (window.name == "REVIEW_WIN"))
  158.           API_WIN.REVIEW_PAGE_NUM += 1;
  159.         else
  160.           API_WIN.PAGE_NUM += 1;
  161.         goto_page(NEXT_PAGE,'next');
  162.     }
  163.   }
  164. }
  165.  
  166. function goto_prev_page()
  167. {
  168.   //are we running a question? if so previous not allowed
  169.   if ((!API_WIN.RUNNING_QUEST) && (!DISABLE_PREV)) {
  170.     //decrement opener PAGE_NUM or REVIEW_PAGE_NUM
  171.     if (API_WIN.RUN_REVIEW)
  172.       API_WIN.REVIEW_PAGE_NUM -= 1;
  173.     else
  174.       API_WIN.PAGE_NUM -= 1;
  175.     goto_page(PREV_PAGE,'previous');
  176.   }
  177. }
  178.  
  179. function goto_menu()
  180. {
  181.   if ((API_WIN.FILE_LMS) || (API_WIN.RUN_TYPE == "flms"))
  182.     API_WIN.flms_sco_finish('../menu.htm');
  183.   else  
  184.     window.close();
  185. }
  186.  
  187. function goto_spec_page(page_num,force_nav_rules)
  188. {
  189.   if (!isNaN(page_num)) {
  190.     if (API_WIN.RUN_REVIEW) {
  191.       alert("This functionality is not supported in the Review Mode.");
  192.     }
  193.     else  {
  194.       page_num = parseFloat(page_num);
  195.       if ((page_num >= 1) && (page_num <= MAX_PAGE_NUM))  {
  196.         var page_str = convert_num_to_str(page_num);
  197.         var page_type = API_WIN.get_page_type(page_str,API_WIN.PAGE_TYPE,LIST_FLASH_PAGES,LIST_HTML_PAGES);
  198.         var page_url = PATH_EXT + API_WIN.get_content_url(page_str,page_type);
  199.         if (force_nav_rules)  {
  200.           if ((page_num > PAGE_NUM) && (!DISABLE_NEXT))  {
  201.             API_WIN.PAGE_NUM = page_num;
  202.             goto_page(page_url,"");
  203.           }
  204.           if ((page_num < PAGE_NUM) && (!DISABLE_PREV))  {
  205.             API_WIN.PAGE_NUM = page_num;
  206.             goto_page(page_url,"");
  207.           }
  208.         }
  209.         else  {
  210.           API_WIN.PAGE_NUM = page_num;
  211.           goto_page(page_url,"");
  212.         }
  213.       }
  214.     }
  215.   }
  216. }
  217.  
  218. function enable_next(bln_temp)
  219. {
  220.   DISABLE_NEXT = !bln_temp;
  221.   if (document.NEXT) {
  222.     if (DISABLE_NEXT) {
  223.       document.NEXT.src = NEXT_DE.src;
  224.     }
  225.     else {
  226.       document.NEXT.src = NEXT_DEF.src;
  227.     }
  228.     if (ORIG_IMG) {
  229.       if (ORIG_IMG.name == "NEXT") {
  230.         ORIG_IMG.src = document.NEXT.src;
  231.       }
  232.     }
  233.   }
  234. }
  235.  
  236. function enable_previous(bln_temp)
  237. {
  238.   DISABLE_PREV = !bln_temp;
  239.   if (document.PREVIOUS) {
  240.     if (DISABLE_PREV) {
  241.       document.PREVIOUS.src = PREVIOUS_DE.src;
  242.     }
  243.     else {
  244.       document.PREVIOUS.src = PREVIOUS_DEF.src;
  245.     }
  246.     if (ORIG_IMG) {
  247.       if (ORIG_IMG.name == "PREVIOUS") {
  248.         ORIG_IMG.src = document.PREVIOUS.src;
  249.       }
  250.     }
  251.   }
  252. }
  253.  
  254. function set_status(sub_sco,status)
  255. {  
  256.   API_WIN.set_sco_status(sub_sco,status);
  257. }
  258.  
  259. function set_location(sub_sco,location)
  260. {
  261.   API_WIN.set_sco_location(sub_sco,location);
  262. }
  263.  
  264. function flash_next()
  265. {
  266.   if (!DISABLE_NEXT)
  267.     FN_TIMER = setInterval("hacked_fn();",1000);
  268. }
  269.  
  270. function hacked_fn()
  271. {
  272.   if (FN_TIMER != "")
  273.     clearInterval(FN_TIMER);
  274.   document.NEXT.src = NEXT_FLASH.src;
  275. }
  276.  
  277. function open_review(review_pages)
  278. {
  279.   if (API_WIN.RUN_REVIEW) {
  280.     if (API_WIN.RV_WIN != null) {
  281.       API_WIN.RV_WIN.close();
  282.       API_WIN.RV_WIN = null;
  283.     }
  284.     API_WIN.RUN_REVIEW = false
  285.   }
  286.   //set REVIEW_PAGES
  287.   API_WIN.RUN_REVIEW = true;
  288.   API_WIN.REVIEW_PAGES = review_pages;
  289.   API_WIN.REVIEW_PAGE_NUM = 1;
  290.   API_WIN.REVIEW_PAGE = parse_string(API_WIN.REVIEW_PAGES,",",API_WIN.REVIEW_PAGE_NUM);
  291.   if (API_WIN.REVIEW_PAGE != "")  {
  292.     var tmp_page_type = API_WIN.get_page_type(API_WIN.REVIEW_PAGE);
  293.     var tmp_page_url = API_WIN.get_content_url(API_WIN.REVIEW_PAGE,tmp_page_type);
  294.     API_WIN.RV_WIN=open(tmp_page_url,"REVIEW_WIN","location=no,scrollbars=no,resizeable=no,width=" + MEDIA_WIDTH + ",height=" + (parseInt(MEDIA_HEIGHT) + parseInt(API_WIN.RV_WIN_OFFSET)) + ",toolbar=no,directories=no,menubar=no,status=yes,");
  295.     API_WIN.RV_WIN.focus();
  296.   }
  297. }
  298.  
  299. function open_popup(page_url,left,top,width,height,scroll,resize,menu)
  300. {
  301.   API_WIN.open_popup(page_url,left,top,width,height,scroll,resize,menu);
  302. }
  303.  
  304. function open_glossary(term)
  305. {
  306.   //API_WIN.open_glossary(term);
  307.   alert("The Glossary is not available yet.");
  308. }
  309.  
  310. function open_prefs()
  311. {
  312.   API_WIN.open_prefs();
  313. }
  314.  
  315. function open_refs()
  316. {
  317.   //API_WIN.open_refs();
  318.   alert("Resources are not available yet.");
  319. }
  320.  
  321. function open_help()
  322. {
  323.   //API_WIN.open_help();
  324.   alert("Help is not available yet.");
  325. }
  326.  
  327. function open_map()
  328. {
  329.   //API_WIN.open_map();
  330.   alert("The Course Map is not available yet.");
  331. }
  332.  
  333. function open_lcms_review(page_url)
  334. {
  335.   API_WIN.open_lcms_review(page_url);
  336. }
  337.  
  338. function show_audio()
  339. {
  340.   if (SHOW_AUDIO) {
  341.     if (PAGE_NUM > 0)
  342.       API_WIN.open_audio_win(API_WIN.get_audio_url(CUR_PAGE_ID));
  343.   }
  344.   else if (API_WIN.AUDIO_WIN != null) {
  345.     API_WIN.AUDIO_WIN.close();
  346.     API_WIN.AUDIO_WIN = null;
  347.   }
  348. }
  349.  
  350. function toggle_audio()
  351. {
  352.   if (SHOW_AUDIO) {
  353.     //document.AUDIO.src = AUDIO_OFF.src;
  354.     API_WIN.SHOW_AUDIO = false;
  355.     SHOW_AUDIO = false;
  356.   }
  357.   else {
  358.     //document.AUDIO.src = AUDIO_ON.src;
  359.     API_WIN.SHOW_AUDIO = true;
  360.     SHOW_AUDIO = true;
  361.   }
  362.   show_audio();
  363. }
  364.  
  365. function switch_lang()
  366. {
  367.   var tmp_iso_lang = "en";
  368.   if (ISO_LANG == "en")
  369.     tmp_iso_lang = "es";
  370.  
  371.   //set it in API window
  372.   API_WIN.set_lang(tmp_iso_lang);
  373.  
  374.   replay_page();
  375. }
  376.  
  377. function run_quiz()
  378. {
  379.   API_WIN.RUN_QUEST = true;
  380.   goto_next_page();
  381. }
  382.  
  383. function goto_next_question()
  384. {
  385.   //make sure questions are there
  386.   if (API_WIN.MAX_QUEST_NUM == 0) {
  387.     //problem
  388.     alert("This Quiz has not been setup correctly. Contact your system administrator.");
  389.   }
  390.   else  {
  391.     //if asked all questions, go back to next page in course
  392.     if (API_WIN.QUEST_NUM >= API_WIN.MAX_QUEST_NUM)  {
  393.       if (API_WIN.QUEST_NUM == API_WIN.MAX_QUEST_NUM) {
  394.         //questions answered, go to results page
  395.         API_WIN.QUEST_NUM += 1;
  396.         goto_page("results.htm","next");
  397.       }
  398.       else  {
  399.         API_WIN.RUN_QUEST = false;
  400.         API_WIN.RUNNING_QUEST = false;
  401.         goto_next_page();
  402.       }
  403.     }
  404.     else  {
  405.       //show next question
  406.       var quest_num = 0;
  407.       var rand_num = 0;
  408.       var quest_id = "";
  409.       while ((quest_id == "") && (QUEST_POOL_NUM > 0)) {
  410.         //get a random question number
  411.         rand_num = Math.random();
  412.         quest_num = Math.round(rand_num*(QUEST_POOL_NUM-1));
  413.         //check id for that number
  414.         if (!item_in_array(QUEST_POOL_LIST[quest_num],API_WIN.QUEST_LIST)) {
  415.           //if not in asked auestion list, use it!
  416.           quest_id = QUEST_POOL_LIST[quest_num];
  417.         }
  418.       }
  419.       //add question to quest list
  420.       API_WIN.QUEST_LIST[API_WIN.QUEST_LIST.length] = quest_id;
  421.       //incement question number
  422.       API_WIN.QUEST_NUM += 1;
  423.       //go to next question
  424.       goto_page(quest_id + ".htm","next");
  425.     }
  426.   }
  427. }
  428.  
  429.  
  430. //quiz stuff - test version, provides feedback and moves to next page
  431. function check_answer_test(answer_obj)
  432. {
  433.     var ans_list = API_WIN.ANSWER_LIST;
  434.   var quest_id = PAGE_NUM;
  435.   if (API_WIN.QUEST_NUM > 0)
  436.     quest_id = QUEST_ID;
  437.     if (!item_in_array(quest_id,ans_list))
  438.     {
  439.         API_WIN.ANSWER_LIST[API_WIN.ANSWER_LIST.length] = quest_id;
  440.     var correct_ans_value = correct_ans(answer_obj,quest_id);
  441.       var correct_ans_obj = eval("document.form1." + correct_ans_value);
  442.       if ((correct_ans_value != "") && (answer_obj.name == correct_ans_value))  {
  443.       //increment correct_answer counter
  444.       API_WIN.CORRECT_ANSWERS += 1;
  445.           do_feedback(correct_ans_obj,true,false);
  446.     }
  447.       else
  448.           do_feedback(correct_ans_obj,false,false);
  449.     }
  450.     else
  451.         alert ("You've already answered this question!");
  452.  
  453.     //navigate to next question
  454.   enable_next(true);
  455.     goto_next_page();
  456. }
  457.  
  458. //quiz stuff - quiz version, provides feedback, if correct moves to next page
  459. function check_answer_quiz(answer_obj)
  460. {
  461.   var correct_ans_value = correct_ans(answer_obj,QUEST_ID);
  462.   var correct_ans_obj = eval("document.form1." + correct_ans_value);
  463.   if ((correct_ans_value != "") && (answer_obj.name == correct_ans_value))  {
  464.     do_feedback(correct_ans_obj,true,true);
  465.     enable_next(true);
  466.     goto_next_page();
  467.   }
  468.   else  {
  469.     do_feedback(correct_ans_obj,false,true);
  470.     answer_obj.checked = false;
  471.   }
  472. }
  473.  
  474. function do_feedback(correct_ans_obj,correct,use_default)
  475. {
  476.   if (SHOW_FEEDBACK)  {
  477.     if (correct)  {
  478.       alert(CORRECT_FEEDBACK);
  479.     }
  480.     else  {
  481.       var incorrect_feedback = INCORRECT_FEEDBACK;
  482.       if (!use_default)
  483.         incorrect_feedback = "Incorrect. The correct answer is: '" + correct_ans_obj.value + "'";
  484.       alert(incorrect_feedback);
  485.     }
  486.   }
  487. }
  488.  
  489. function correct_ans(answer_obj,quest_id)
  490. {
  491.   var correct_ans = "";
  492.   var correct_ans_num = Math.floor(((1 / (EXT_VALUE / 1000000)) / 3) / quest_id);
  493.   switch (correct_ans_num)
  494.   {
  495.       case 1:
  496.           correct_ans = "A";
  497.           break;
  498.       case 2:
  499.           correct_ans = "B";
  500.           break;
  501.       case 3:
  502.           correct_ans = "C";
  503.           break;
  504.       case 4:
  505.           correct_ans = "D";
  506.           break;
  507.     case 5:
  508.           correct_ans = "E";
  509.           break;
  510.   }
  511.  
  512.   return correct_ans;
  513. }
  514.  
  515. function write_media()
  516. {
  517.   if (ENABLE_AUDIO) {
  518.     document.write(MEDIA_HTML);
  519.   }
  520. }
  521.  
  522. function flash_command(command_str)
  523. {
  524.   eval(command_str);
  525. }
  526.  
  527.  
  528.